home *** CD-ROM | disk | FTP | other *** search
/ Animation How-To / Animation How-to CD.iso / PLY / CHAPTER2 / BOLITA / BOLITA3.PI < prev    next >
Text File  |  1994-01-01  |  6KB  |  230 lines

  1. // BOLITA3.PI
  2. // Bumping line o' balls, infinite procession, flapping down a tunnel
  3.  
  4. start_frame 0
  5. end_frame 179
  6. total_frames 180
  7.  
  8. outfile balls
  9.  
  10. include "\ply\colors.inc"
  11.  
  12. // Set up background color & lights
  13. background Navyblue
  14. define dim <0.7,0.7,0.7>
  15. light dim,<10, 10, -20>
  16. light dim,<-10, 10, -20>
  17. light <0, 20, 0>
  18.  
  19.  
  20. // Set up the camera
  21. viewpoint {
  22.    from <12, 12,-22> 
  23.    at   <0.5, 5, 0>
  24.    up   <0, 1, 0>
  25.    angle 50
  26.    resolution 320,200
  27.    aspect 1.43
  28.    }
  29.  
  30. define pi 3.14159
  31. define rad pi / 180
  32.  
  33. define speed 10
  34. define t frame*speed
  35. define moving floor (frame/(360/speed)) + 1
  36.  
  37. define phz 30 * sin(t * rad)
  38. define ang 270 + phz
  39.  
  40. // ball 1
  41.  
  42.    if (phz > 0 && 1 > (5 - moving)) {
  43.       define x1 8 * cos(ang * rad) + 1 * 2 - 6
  44.       define y1 8 * sin(ang * rad) + 8
  45.    }
  46.    else {
  47.       define x1 1 * 2 - 6
  48.       define y1 0
  49.    }
  50.    
  51.    if (phz < 0 && 1 < (moving + 1)) {
  52.       define x1 8 * cos(ang * rad) + 1 * 2 - 6
  53.       define y1 8 * sin(ang * rad) + 8
  54.    }
  55.  
  56. // ball 2
  57.  
  58.    if (phz > 0 && 2 > (5 - moving)) {
  59.       define x2 8 * cos(ang * rad) + 2 * 2 - 6
  60.       define y2 8 * sin(ang * rad) + 8
  61.    }
  62.    else {
  63.       define x2 2 * 2 - 6
  64.       define y2 0
  65.    }
  66.    
  67.    if (phz < 0 && 2 < (moving + 1)) {
  68.       define x2 8 * cos(ang * rad) + 2 * 2 - 6
  69.       define y2 8 * sin(ang * rad) + 8
  70.    }
  71.    
  72. // ball 3
  73.  
  74.    if (phz > 0 && 3 > (5 - moving)) {
  75.       define x3 8 * cos(ang * rad) + 3 * 2 - 6
  76.       define y3 8 * sin(ang * rad) + 8
  77.    }
  78.    else {
  79.       define x3 3 * 2 - 6
  80.       define y3 0
  81.    }
  82.    
  83.    if (phz < 0 && 3 < (moving + 1)) {
  84.       define x3 8 * cos(ang * rad) + 3 * 2 - 6
  85.       define y3 8 * sin(ang * rad) + 8
  86.    }
  87.    
  88. // ball 4
  89.  
  90.    if (phz > 0 && 4 > (5 - moving)) {
  91.       define x4 8 * cos(ang * rad) + 4 * 2 - 6
  92.       define y4 8 * sin(ang * rad) + 8
  93.    }
  94.    else {
  95.       define x4 4 * 2 - 6
  96.       define y4 0
  97.    }
  98.    
  99.    if (phz < 0 && 4 < (moving + 1)) {
  100.       define x4 8 * cos(ang * rad) + 4 * 2 - 6
  101.       define y4 8 * sin(ang * rad) + 8
  102.    }
  103.    
  104. // ball 5
  105.    
  106.    if (phz > 0 && 5 > (5 - moving)) {
  107.       define x5 8 * cos(ang * rad) + 5 * 2 - 6
  108.       define y5 8 * sin(ang * rad) + 8
  109.    }
  110.    else {
  111.       define x5 5 * 2 - 6
  112.       define y5 0
  113.    }
  114.    
  115.    if (phz < 0 && 5 < (moving + 1)) {
  116.       define x5 8 * cos(ang * rad) + 5 * 2 - 6
  117.       define y5 8 * sin(ang * rad) + 8
  118.    }
  119.  
  120. // make the mounts flap like a bird
  121.  
  122.    define phz2  10 * COS(2*t * rad) + exp(1.6 * (1 + cos((2*t - 80) * 
  123. rad)))
  124.  
  125.    define ang2 45 + phz2                    
  126.  
  127.    define zm 8 * COS(ang2 * rad)
  128.    define ym 8 * SIN(ang2 * rad) + 2          
  129.    define fy -4 * SIN(ang2 * rad) + 4          
  130.  
  131.    define z 0
  132.  
  133.    define slateish
  134.    texture {
  135.       surface {
  136.          ambient SlateBlue, 0.2
  137.          diffuse SlateBlue, 0.6
  138.          specular white, 0.6
  139.          reflection white,0.5
  140.          microfacet Reitz 10
  141.          }
  142.       }
  143.  
  144.    define real_dark <0.1,0.1,0.1>
  145.    define onyx texture { metallic { color real_dark } }
  146.  
  147.    define blue_ripple
  148.    texture {
  149.       noise surface {
  150.          color navyblue
  151.          normal 2
  152.          frequency 1
  153.          phase -2*pi*t/360
  154.          bump_scale 2
  155.          ambient 0.2
  156.          diffuse 0.4
  157.          specular yellow, 0.5
  158.          reflection 0.25
  159.          microfacet Reitz 10
  160.          }
  161.       }
  162.  
  163.  
  164.    define light_blue_ripple
  165.    texture {
  166.       noise surface {
  167.          color navyblue
  168.          normal 1
  169.          frequency 1
  170.          phase -2*pi*t/360
  171.          bump_scale 0.2
  172.          ambient 0.2
  173.          diffuse 0.4
  174.          specular yellow, 0.5
  175.          reflection 0.25
  176.          microfacet Reitz 10
  177.          }
  178.       }
  179.  
  180. // the flapping clacking contraption
  181.  
  182.    define bolita 
  183.       object {
  184.          object { sphere <x1,y1+fy,z>,1 slateish }
  185.        + object { sphere <x2,y2+fy,z>,1 slateish }
  186.        + object { sphere <x3,y3+fy,z>,1 slateish }
  187.        + object { sphere <x4,y4+fy,z>,1 slateish }
  188.        + object { sphere <x5,y5+fy,z>,1 slateish }
  189.  
  190.    // the strings
  191.  
  192.        + object {cylinder <x1,y1+1+fy,z>,<1*2-6,ym,-zm>,0.05 shiny_orange }
  193.        + object {cylinder <x2,y2+1+fy,z>,<2*2-6,ym,-zm>,0.05 shiny_orange }
  194.        + object {cylinder <x3,y3+1+fy,z>,<3*2-6,ym,-zm>,0.05 shiny_orange }
  195.        + object {cylinder <x4,y4+1+fy,z>,<4*2-6,ym,-zm>,0.05 shiny_orange }
  196.        + object {cylinder <x5,y5+1+fy,z>,<5*2-6,ym,-zm>,0.05 shiny_orange }
  197.  
  198.        + object { cylinder <x1,y1+1+fy,z>,<1*2-6,ym,zm>,0.05 shiny_orange }
  199.        + object { cylinder <x2,y2+1+fy,z>,<2*2-6,ym,zm>,0.05 shiny_orange }
  200.        + object { cylinder <x3,y3+1+fy,z>,<3*2-6,ym,zm>,0.05 shiny_orange }
  201.        + object { cylinder <x4,y4+1+fy,z>,<4*2-6,ym,zm>,0.05 shiny_orange }
  202.        + object { cylinder <x5,y5+1+fy,z>,<5*2-6,ym,zm>,0.05 shiny_orange }
  203.  
  204.    // the mounts 
  205.  
  206.        + object { box <-6,ym-0.1,-zm-0.5>,<6,ym+0.5,-zm+0.5> onyx }
  207.        + object { box <-6,ym-0.1, zm-0.5>,<6,ym+0.5, zm+0.5> onyx }
  208.     }
  209.  
  210.    define copies fmod(frame,36)
  211.    bolita { translate <-66+copies,0,0> }
  212.    bolita { translate <-30+copies,0,0> }
  213.    bolita { translate <  6+copies,0,0> }
  214.  
  215. // make watery walls
  216.    object {
  217.       object {cylinder <-100,0,0>,<100,0,0>,16}
  218.     & object {box <-101,-8,-20>,<101,20,20>}
  219.       rotate <125,0,0>
  220.       translate <0,4,5>
  221.       blue_ripple
  222.    }
  223.  
  224. // reflecting pool
  225.    object {
  226.       polygon 4,<-100,-4,-10>,<-100,-4,10>,<100,-4,10>,<100,-4,-10>
  227.       onyx
  228.    }
  229.  
  230.